﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Data;
using System.Data.SqlClient;

using Padelcenter.Common;

namespace Padelcenter.DataAccess
{
    #region " Domicilio Select "
    public class Domicilio_Select : DataAccessBase
    {
        public Domicilio_Select()
        {
            StoredProcedureName = StoredProcedure.Name.Domicilio_SELECT.ToString();
        }
        
        public DataSet Get()
        {
            DataSet ds;

            Domicilio_Select_Prm domicilio_Select_Prm = new Domicilio_Select_Prm(this.Domicilio);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, domicilio_Select_Prm.Parameters);

            return ds;
        }

        private Domicilio _domicilio;

        public Domicilio Domicilio
        {
            get { return _domicilio; }
            set { _domicilio = value; }
        }
    }

    public class Domicilio_Select_Prm
    {
        public Domicilio_Select_Prm(Domicilio domicilio)
        {
            this.Domicilio = domicilio;
            this.BuildParams();
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idDomicilio"            , this.Domicilio.IdDomicilio ),
                new SqlParameter( "@idUsuario"              , this.Domicilio.IdUsuario),
                new SqlParameter( "@ConFiltroEsRegistro"    , this.Domicilio.ConFiltroEsRegistro),
                new SqlParameter( "@EsRegistro"             , this.Domicilio.EsRegistro),
                new SqlParameter( "@ConFiltroEsPrincipal"   , this.Domicilio.ConFiltroEsPrincipal),
                new SqlParameter( "@EsPrincipal"            , this.Domicilio.EsPrincipal),
                new SqlParameter( "@ConFiltroActivo"        , this.Domicilio.ConFiltroActivo),
                new SqlParameter( "@Activo"                 , this.Domicilio.Activo)
            };
            this.Parameters = parameters;
        }

        private Domicilio _domicilio;
        private SqlParameter[] _parameters;

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }

        public Domicilio Domicilio
        {
            get { return _domicilio; }
            set { _domicilio = value; }
        }
    }
    #endregion

    #region " Domicilio Insert "
    public class Domicilio_Insert : DataAccessBase
    { 
        public Domicilio_Insert()
        {
            StoredProcedureName = StoredProcedure.Name.Domicilio_INSERT.ToString();
        }
        
        public DataSet Get()
        {
            DataSet ds;

            Domicilio_Insert_Prm domicilio_Insert_Prm = new Domicilio_Insert_Prm(this.Domicilio);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, domicilio_Insert_Prm.Parameters);

            return ds;
        }

        private Domicilio _domicilio;

        public Domicilio Domicilio
        {
            get { return _domicilio; }
            set { _domicilio = value; }
        }
    }
    
    public class Domicilio_Insert_Prm
    {
        public Domicilio_Insert_Prm(Domicilio domicilio)
        {
            this.Domicilio = domicilio;
            this.BuildParams();
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idUsuario"              , this.Domicilio.Usuario.IdUsuario),
                new SqlParameter( "@Direccion"              , this.Domicilio.Direccion),
                new SqlParameter( "@Ciudad"                 , this.Domicilio.Ciudad),
                new SqlParameter( "@CodigoPostal"           , this.Domicilio.CodigoPostal),
                new SqlParameter( "@idProvincia"            , this.Domicilio.IdProvincia),
                new SqlParameter( "@Provincia"              , this.Domicilio.Provincia),
                new SqlParameter( "@idPais"                 , this.Domicilio.Pais.IdPais),
                new SqlParameter( "@EsRegistro"             , this.Domicilio.EsRegistro),
                new SqlParameter( "@EsPrincipal"            , this.Domicilio.EsPrincipal),
                new SqlParameter( "@Activo"                 , this.Domicilio.Activo)
            };
            this.Parameters = parameters;
        }

        private Domicilio _domicilio;
        private SqlParameter[] _parameters;

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }

        public Domicilio Domicilio
        {
            get { return _domicilio; }
            set { _domicilio = value; }
        }
    }
    #endregion

    #region " Domicilio Update "
    public class Domicilio_Update : DataAccessBase
    {
        public Domicilio_Update()
        {
            StoredProcedureName = StoredProcedure.Name.Domicilio_UPDATE.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            Domicilio_Update_Prm domicilio_Update_Prm = new Domicilio_Update_Prm(this.Domicilio);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, domicilio_Update_Prm.Parameters);

            return ds;
        }

        private Domicilio _domicilio;

        public Domicilio Domicilio
        {
            get { return _domicilio; }
            set { _domicilio = value; }
        }
    }

    public class Domicilio_Update_Prm
    {
        public Domicilio_Update_Prm(Domicilio domicilio)
        {
            this.Domicilio = domicilio;
            this.BuildParams();
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idDomicilio"            ,this.Domicilio.IdDomicilio),
                new SqlParameter( "@idUsuario"              , this.Domicilio.Usuario.IdUsuario),
                new SqlParameter( "@Direccion"              , this.Domicilio.Direccion),
                new SqlParameter( "@Ciudad"                 , this.Domicilio.Ciudad),
                new SqlParameter( "@CodigoPostal"           , this.Domicilio.CodigoPostal),
                new SqlParameter( "@idProvincia"            , this.Domicilio.IdProvincia),
                new SqlParameter( "@Provincia"              , this.Domicilio.Provincia),
                new SqlParameter( "@idPais"                 , this.Domicilio.Pais.IdPais),
                new SqlParameter( "@EsRegistro"             , this.Domicilio.EsRegistro),
                new SqlParameter( "@EsPrincipal"            , this.Domicilio.EsPrincipal),
                new SqlParameter( "@Activo"                 , this.Domicilio.Activo)
            };
            this.Parameters = parameters;
        }

        private Domicilio _domicilio;
        private SqlParameter[] _parameters;

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }

        public Domicilio Domicilio
        {
            get { return _domicilio; }
            set { _domicilio = value; }
        }
    }
    #endregion
}
